package com.foreknow.demo16;

/**
 * 接口(interface)：接口主要用于描述现实世界中拥有同种行为的事物。比如：飞机  ufo可能都会飞，但是是完全不同的类。
 * 可以将接口理解为是一种特殊的抽象类(没有属性只有抽象方法)实际上接口的官方文档的定义中它不是一个类.
 *
 * 接口的特征：它是一个常量和抽象方法的集合
 * 1.关键字是interface,不是calss
 * 2.接口中的方法全部都是public的公有的抽象(abstract)方法,可以省略public和abstract关键字。
 * 3.有接口就要有实现类，实现类来负责实现接口中所有的抽象方法
 * 4.可以使用implements来实现接口
 * 5.接口是不能被实例化的(不能直接创建对象)
 * 6.接口之间可以互相继承，且是多继承的(extends) public interface C extends A,B
 * 7.类可以实现接口，且可以多重实现(implements)  public class BImpl implements A,B
 * 8.一个类可以继承另一个类的同时去实现一个或者是多个接口
 *
 * 笔试题：
 * 接口与抽象类的区别
 * 1.抽象类是一个class,接口是interface，这是一个概念
 * 2.抽象类中可以有抽象方法，也可以有普通方法；接口中是抽象方法与常量的一个集合
 * 3.抽象类中可以有属性；而接口中只能是常量；
 * 4.抽象类只能被单继承，而接口可以实现多继承
 */
public class Test {
  public static void main(String[] args) {
  //    A a = new AImpl();
  //    a.eat();
  //    a.sleep();
  //    a.study();
    C c = new CImpl();
    c.eat();
    c.jump();
    c.sleep();
    c.study();
    c.walk();
}
}
